Method and system for head position control in embedded disk drive controllers

ABSTRACT

A track follow controller (“TFC”) in an embedded disk controller is provided. The TFC includes, a position error calculator that determines a linear position of a head based on burst format and determines a position error based on the linear position and a target position; and a position error output compensator that receives a position error signal from the position error calculator and filters the position error signal. The position error calculator includes a burst selector that can select a burst pair; a linear position calculator that calculates head linear position based on burst pair format; and an error calculator that determines the position error based on the linear position and target position. The position error calculator is functionally coupled to the position error compensator having a single filter or more than one cascaded filters each having reduced input to output delay through use of an anticipation mode.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. provisional patent applicationSer. No. 60/543,233, filed on 02/10/2004, the disclosure of which isincorporated herein by reference in its entirety.

BACKGROUND OF THE INVENTION FIELD OF THE INVENTION

The present invention relates generally to storage systems, and moreparticularly to disk drive servo controllers.

BACKGROUND

Conventional computer systems typically include several functionalcomponents. These components may include a central processing unit(CPU), main memory, input/output (“I/O”) devices, and disk drives. Inconventional systems, the main memory is coupled to the CPU via a systembus or a local memory bus. The main memory is used to provide the CPUaccess to data and/or program information that is stored in main memoryat execution time. Typically, the main memory is composed of randomaccess memory (RAM) circuits. A computer system with the CPU and mainmemory is often referred to as a host system.

The main memory is typically smaller than disk drives and may bevolatile. Programming data is often stored on the disk drive and readinto main memory as needed. The disk drives are coupled to the hostsystem via a disk controller that handles complex details of interfacingthe disk drives to the host system. Communications between the hostsystem and the disk controller is usually provided using one of avariety of standard I/O bus interfaces.

Typically, a disk drive includes one or more magnetic disks. Each disk(or platter) typically has a number of concentric rings or tracks(platter) on which data is stored. The tracks themselves may be dividedinto sectors, which are the smallest accessible data units. Apositioning head above the appropriate track accesses a sector. An indexpulse typically identifies the first sector of a track. The start ofeach sector is identified with a sector pulse. Typically, the disk drivewaits until a desired sector rotates beneath the head before proceedingwith a read or write operation. Data is accessed serially, one bit at atime and typically, each disk has its own read/write head.

FIG. 1A shows a disk drive system 100 with platters 101A and 101B, anactuator 102 and read/write head 103. Typically, multiple platters/readand write heads are used. Platters 101A-101B have assigned tracks forstoring system information, servo data and user data. Servo patterns arerecorded on storage media at manufacturing time. Typically, the servopatterns are recorded at evenly spaced intervals, as shown in FIG. 1B.FIG. 1B shows eight servo fields per track and each track has patternsof information that are described below.

The disk drive is connected to the disk controller that performsnumerous functions, for example, converting digital data to analog headsignals, disk formatting, error checking and fixing, logical to physicaladdress mapping and data buffering. To perform the various functions fortransferring data, the disk controller includes numerous components.

To access data from (or to write data to) a disk drive, the host systemmust know where to read the data from(or write data to) the disk drive.A driver typically performs this task. Once the disk drive address isknown, the address is translated to cylinder, head and sector based onplatter geometry and sent to the disk controller. Logic on the hard disklooks at the number of cylinders requested. Servo controller firmwareinstructs motor control hardware to move read/write heads 103 to theappropriate track. When the head is in the correct position, it readsthe data from the correct track.

Typically, read and write head 103 has a write core for writing data ina data region, and a read core for magnetically detecting the datawritten in the data region of a track and a servo pattern recorded on aservo region.

A servo system 104 detects the position of head 103 on platter 101Aaccording to a phase of a servo pattern detected by the read core ofhead 103. Servo system 104 then moves head 103 to the target position.

Servo system 104 servo-controls head 103 while receiving feedback for adetected position obtained from a servo pattern so that any positionalerror between the detected position and the target position is negated.

Conventional servo/embedded controller systems are not efficient indetermining the linear position of a head based on the format of servopatterns or determine positional errors based on the linear position anda target's position.

Therefore, what is desired is a method and system for determining thelinear position of a head based on the format of servo patterns anddetermining (and adjusting) positional errors based on the linearposition and a target's position.

SUMMARY OF THE INVENTION

In one aspect of the present invention, a track follow controller(“TFC”) in an embedded disk controller is provided. The TFC includes, aposition error calculator that determines a linear position of a headbased on burst format and determines a position error based on thelinear position and a target position; and a position error outputcompensator that receives a position error signal from the positionerror calculator and filters the position error signal.

The position error is automatically adjusted based on run out correctioninformation. The position error calculator is functionally coupled tothe position error output compensator having a single filter or morethan one cascaded filters each having reduced input to output delaythrough use of an anticipation mode.

The position error calculator includes a burst selector that can selecta burst pair; a linear position calculator that calculates head linearposition based on burst pair format; and an error calculator thatdetermines the position error based on the linear position and targetposition.

The position error output compensator includes a first filter thatreceives a position error signal from the position error calculator; anda second filter that receives an input signal from the first filter,where after all calculations are completed for one sample, values areshifted to a holding cell so that calculations can begin for a nextsample in anticipation.

In another aspect of the present invention, a position error calculator(“PEC”) for an embedded disk controller is provided. The PEC includes aburst selector that can select a burst pair; a linear positioncalculator that calculates head linear position based on burst pairformat; and a position error calculator that determines a position errorbased on a linear position and target position, and the position erroris compared to certain programmable limits.

The position error is automatically adjusted based on run out correctioninformation. Also, the position error output calculator is functionallycoupled to a position error compensator having a single filter or morethan one cascaded filters each having reduced input to output delaythrough use of an anticipation mode.

In yet another aspect of the present invention, a position error outputcompensator used in an embedded disk controller is provided. Theposition error output compensator includes a first filter that receivesa position error signal from a position error calculator; and a secondfilter that receives an input signal from the first filter, where afterall calculations are completed for one sample, values are shifted to aholding cell so that calculations can begin for a next sample inanticipation. The first filter is a five-tap filter and the secondfilter is a seven-tap filter and both the filters use a single multiplyaccumulation block.

In yet another aspect of the present invention, a method for determiningposition error for a head in used by an embedded disk controller to readand/or write data to a storage media is provided. The method includesdetermining a difference between a head linear position and a targetposition for a four and/or six burst format; and generating apreliminary position error signal.

In one aspect of the present invention the process and systemautomatically calculate linear position based on burst values. Both fourand six burst formats are supported. Bursts pairs may be arranged in anyorder.

In yet another aspect of the present invention, position error signal isautomatically calculated based on linear position and target position.The position error signal is automatically compared to severalprogrammable limits, and several programmable values can be substitutedwhen the error signal is outside of these limits.

In yet another aspect of the present invention, the position errorcalculation is automatically adjusted based on either recorded orelectronically stored Run Out Correction (ROC) information.

This brief summary has been provided so that the nature of the inventionmay be understood quickly. A more complete understanding of theinvention can be obtained by reference to the following detaileddescription of the preferred embodiments thereof in connection with theattached drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing features and other features of the present invention willnow be described. In the drawings, the same components have the samereference numerals. The illustrated embodiment is intended toillustrate, but not to limit the invention. The drawings include thefollowing Figures:

FIG. 1A shows a block diagram of a disk drive;

FIG. 1B shows a diagram of a disk platter with saved servo information;

FIG. 2 is a block diagram of an embedded disk controller system,according to one aspect of the present invention;

FIG. 3 is a block diagram showing the various components of the FIG. 2system and a two-platter, four-head disk drive, according to one aspectof the present invention;

FIG. 4 is a block diagram of a servo controller, according to one aspectof the present invention; is FIG. 5A shows a four-burst servo dataformat used according to one aspect of the present invention;

FIG. 5B shows a six-burst data format, used according to one aspect ofthe present invention;

FIG. 6A shows a graphical illustration of digital burst values for afour-burst servo data format;

FIG. 6B shows a graphical illustration of digital burst values for asix-burst servo data format;

FIG. 7 shows a graphical illustration of actual position and linearposition for a four-burst servo data format;

FIG. 8 is a flow chart for determining the head linear position for afour-burst format;

FIG. 9 is a flow chart for determining the head linear position for asix-burst format;

FIG. 10 shows a graphical illustration of actual position and linearposition for a six-burst servo data;

FIG. 11 shows a graphical illustration of repeatable runout;

FIG. 12A shows a block diagram of a track flow controller, according toone aspect of the present invention;

FIG. 12B shows a block diagram of a position error calculator, accordingto one aspect of the present invention;

FIG. 13 shows a flow diagram for determining error, according to oneaspect of the present invention;

FIG. 14 shows a-block diagram of position correction output compensator,according to one aspect of the present invention;

FIG. 15 shows a first stage filter block diagram, according to oneaspect of the present invention;

FIG. 16 shows a first stage filter signal flow diagram, according to oneaspect of the present invention; and

FIG. 17 shows a second stage filter signal flow diagram, according toone aspect of the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

To facilitate an understanding of the preferred embodiment, the generalarchitecture and operation of an embedded disk controller will bedescribed initially. The specific architecture and operation of thepreferred embodiment will then be described.

FIG. 2 shows a block diagram of an embedded disk controller system 200according to one aspect of the present invention. System 200 may be anapplication specific integrated circuit (“ASIC”).

System 200 includes a microprocessor (“MP”) 201 that performs variousfunctions described below. MP 201 may be a Pentium® Class processordesigned and developed by Intel Corporation® or an ARM processor. MP 201is operationally coupled to various system 200 components via buses 222and 223. Bus 222 may be an Advance High performance (AHB) bus asspecified by ARM Inc. Bus 223 may be an Advance Peripheral Bus (“APB”)as specified by ARM Inc. The specifications for AHB and APB areincorporated herein by reference in their entirety.

System 200 is also provided with a random access memory (RAM) or staticRAM (SRAM) 202 that stores programs and instructions, which allows MP201 to execute computer instructions. MP 201 may execute codeinstructions (also referred to as “firmware”) out of RAM 202.

System 200 is also provided with read only memory (ROM) 203 that storesinvariant instructions, including basic input/output instructions.

System 200 is also provided with a digital signal processor (“DSP”) 206that controls and monitors various servo functions through DSP interfacemodule (“DSPIM”) 208 and servo controller interface 210 operationallycoupled to a servo controller (“SC”) 211.

DSPIM 208 interfaces DSP 206 with MP 201 and allows DSP 206 to update atightly coupled memory module (TCM) 205 (also referred to as “memorymodule” 205) with servo related information. MP 201 can access TCM 205via DSPIM 208.

Servo controller interface (“SCI”) 210 includes an APB interface 213that allows SCI 210 to interface with APB bus 223 and allows SC 211 tointerface with MP 201 and DSP 206.

SCI 210 also includes DSPAHB interface 214 that allows access to DSPAHBbus 209. SCI 210 is provided with a digital to analog and analog todigital converter 212 that converts data from analog to digital domainand vice-versa. Analog data 220 enters module 212 and leaves as analogdata 220A to a servo device 221.

SC 211 has a read channel device (“RDC”) serial port 217, a motorcontrol (“SVC”) serial port 218 for a “combo” motor controller device, ahead integrated circuit (HDIC) serial port 219 and a servo data (“SVD”)interface 216 for communicating with various devices.

FIG. 3 shows a block diagram with disk 100 coupled to system 200,according to one aspect of the present invention. FIG. 3 shows a readchannel device 303 that receives signals from a pre-amplifier 302 (alsoknown as head integrated circuit (HDIC)) coupled to disk 100. MarvellSemiconductor Inc. manufactures one example of a read channel device303®, Part Number 88C7500, while pre-amplifier 302 may be a Texasinstrument, Part Number SR1790. Pre-amplifier 302 is also operationallycoupled to SC 211. Servo data (“SVD”) 305 is sent to SC 211.

A motor controller 307 (also referred to as device 307), (for example, amotor controller manufactured by Texas Instruments®, Part Number SH6764)sends control signals 308 to control actuator movement using motor 307A.It is noteworthy that spindle 101C is controlled by a spindle motor (notshown) for rotating platters 101A and 101B. SC 211 sends plural signalsto motor controller 307 including clock, data and “enable” signals tomotor controller 307 (for example, SV_SEN, SV_SCLK and SV_SDAT).

SC 211 is also operationally coupled to a piezo controller 309 thatallows communication with a piezo device (not shown). One such piezocontroller is sold by Rolm Electronics®, Part Number BD6801FV. SC 211sends clock, data and enable signals to controller 309 (for example,PZ_SEN, SV_SCLK and SV_SDAT).

FIG. 4 shows a block diagram of SC 211, according to one aspect of thepresent invention. FIG. 4 shows SC 211 with a serial port controller 404for controlling various serial ports 405-407. SC 211 also has aservo-timing controller (“STC”) 401 that automatically adjusts the timebase when a head change occurs. Servo controller 211 includes aninterrupt controller 411 that can generate an interrupt to DSP 206 andMP 201. Interrupts may be generated when a servo field is found (or notfound) and for other reasons. SC 211 includes a servo monitoring port412 that monitors various signals to SC 211.

SC 211 uses a pulse width modulation unit (“PWM”) 413 for supportingcontrol of motor 307A PWM, and a spindle motor PWM 409 and a piezo PWM408.

MP 201 and/or DSP 206 use read channel device 303 for transferringconfiguration data and operational commands through SC 211 (via readchannel serial port interface 303A). SC 211 also includes a multi-ratetimer module 403 for controlling various timing operations involving SC211 and other components.

In one aspect of the present invention, SC 211 includes a track followcontroller (“TFC”) 402 for determining the linear position of a headbased on format of servo patterns and determining/adjusting positionalerrors based on the linear position and target position.

SC 211 uses the following registers whose values are used in variousadaptive aspects of the present invention, as discussed below:

-   -   (a) KpReg: Kp Register (Read/Write, Address offset 2D4h): This        register allows a user to apply a “Strength factor” for each        head. The strength factor can be used to increase the gain of        the position detection signal path for a weaker head.    -   (b) ROReg: Run Out Correction Register (Read/Write, Address        offset 320h): This register allows a user to apply a run out        correction factor from firmware, as described below.    -   (c) ULLReg: Lock Upper Limit Register (Read/Write, Address        offset 304h): This register defines the upper “locked on track”        limits.    -   (d) LLLReg: Lock Lower Limit Register (Read/Write, Address        offset 300h): This register defines the lower “locked on track”        limits.    -   (e) TPOSReg: Target Position Register (Read/Write, Address        offset 4A0h): This register is used to set a current target        position.    -   (e) Gain Register (with respect step S1301, FIG. 13) is the same        as the PES gain register.    -   (f) PGReg: PES Gain Register (Read/Write, Address offset 4A8h):        This register provides the PES gain outside of the “locked”        limits.    -   (g) PLGReg: PES Locked Gain Register (Read/Write, address offset        4BCh): This register gives the PES gain inside of “locked”        limits.    -   (h) TFCReg: Track Follow Control Register (Address offset 2C0h):        This is a global control register for TFC 402.    -   (i) DOSReg: DACval Offset Register (Read/Write, Address offset        2F4h): This register can be used to set a value for the DAC        offset.    -   (j) LOUTReg: Last Output Register (Read only, Address offset        31Ch): The register provides the “previous (last) linear        position head output”.    -   (k) COUTReg: Current Output Register (Read/Write, Address offset        318h): The register provides the “current linear position head        output”.

Before discussing the various adaptive aspects of TFC 402, the followingprovides a description of how linear position is determined based onservo data format. FIG. 5A shows the format of servo data pattern 500with various fields. Pattern 500 includes a constant frequency field 503for automatic gain control (“AGC”) and phase lock loop (“PLL”) frequencyacquisition. Synchronous pattern 504 occurs after field 503. A four-bittrack identification (“ID”) 501 contains a digital number that indicatesa current track position. It is noteworthy that an 18-bit ID field maybe used to identify the track position.

Pattern 500 includes a “servo burst” pattern (also referred to as“burst”) 502 with a data pattern “ABCD”. Burst 502 is commonly referredto as a “four burst quadrature”, since four bursts are recorded. Thebursts (i.e., A, B, C and D) are offset from each other by one quarterof a two-track cycle, i.e., C burst is offset from A by one-half trackwidth, and B is offset from C by one half-track width.

When head 103 moves from the Outer diameter (OD) track toward the InnerDiameter (ID) track, A, B, C and D burst information plays back awaveform similar to the one shown in FIG. 6A. Information in pattern 500can be used to construct a digital number that represents head 103'sposition as shown by the process flow diagram of FIG. 8, which is wellknown in the art. The following abbreviations are used in the flowdiagram of FIG. 8:

-   -   FOD: Forces Odd Track Down (If odd, do nothing. If even,        subtract one.)    -   FOU: Forces Odd Track UP (If odd, do nothing. If even, add one.)    -   FEU: Forces Even Track Up (If even, do nothing. If odd, add        one.)    -   FED: Forces Even Track Down (If even, do nothing. If odd,        subtract one.)    -   P=Primary Position    -   s1=Secondary Position    -   Burst 0=A digital number that is proportional to the voltage        amplitude of the A Burst    -   Burst 1=A digital number that is proportional to the voltage        amplitude of the B Burst    -   Burst 2=A digital number that is proportional to the voltage        amplitude of the C Burst    -   Burst 3=A digital number that is proportional to the voltage        amplitude of the D Burst    -   RTKID=Recovered Track ID    -   Kp=The value contained in the Kp register (not shown) located in        SC 211

Linear position determined from FIG. 8 is graphically illustrated inFIG. 7. The flat segment 700 through out the graph provides themicro-position of head 103. It is desirable to minimize the length ofthe flat segment 700 and hence it is common to use a six burst patternto improve the linearity of the position information (as shown in FIG.7).

A six burst pattern is shown in FIG. 5B as 500A, where the servo bursts505 are shown as A, B, C, D, E and F. A six burst playback waveform isshown in FIG. 6B.

FIGS. 9A & 9B show a flow diagram for determining the linear positionusing a six-burst format 505. The linear position is graphicallyillustrated in FIG. 10. As shown in FIG. 10, the linearity improves witha six-burst format 505 versus a four-burst format 502. However, thesix-burst format 505 occupies more area than the four-burst format.Hence it is desirable to automatically determine the linear position forboth the four and six burst format.

Another term that is used below to describe the adaptive aspects of thepresent invention is repeatable runout (“RRO”). This is shown in FIG. 11as the difference between the ideal and actual path of head 103. If RROis known, then the calculated head 103 position can be adjusted, asdiscussed below.

Track Follow Controller 402:

In one aspect of the present invention, TFC 402 is provided toaccurately perform position error and correction calculations requiredto control head position. TFC 402 operates with both 4 or 6 burstformats with a position error of up to four tracks in range;automatically selects the correct burst pair based on positioninformation; automatically applies run out correction factor (ROC)recovered from the servo field; runs in standard or multi-rate modes(controlled by multi-rate timer 403); checks the position error beforecalculation of correction output and performs compensation on positionerror to calculate the correction output.

FIG. 12A shows a block diagram of TFC 402, according to one aspect ofthe present invention. TFC 402 includes a position error calculator(“PEC”) 1202 and a position error output compensator (“POC”) 1204. PEC1202 converts a current head 103 position into a position error signal(Pes 1203).

FIG. 12B shows a block diagram of PEC 1202 with a burst selector module1202C, linear position calculator (“LPC”) 1202D and error outputcalculator (“EOC”) 1202H. Burst data 1202A is received by burst selector(BSEL) 1202C that also receives configuration information 1202M. BSEL1202C selects a burst pair, for example, A-B, C-D, or E-F. The burstpair from BSEL 1202C is sent to LPC 1202D. LPC 1202D also receivesrecovered track ID (“RTKID”) 1202B from the read channel, length oftrack ID (“LTKID”) 1202E from a programmable register and a Kp value1202F from programmable Kp register.

LPC 1202D supports both four and six burst position error calculations.LPC 1202D uses the output from BSEL 1202C to calculate the intermediateresults for primary position (p_pos) and the secondary positions (s1_posand s2_pos), as shown in FIGS. 8 and 9. Linear position (lin_pos) is a34-bit value with 20 bits for track ID and 14 bits for head 103 microposition value.

LPC 1202D uses burst 0 and burst 1 to determine the primary position(p-pos), which is used during track follow. Burst 0 and 1 are called theprimary pair. When the output of primary pair becomes nonlinear in thepositive direction, LPC 1202D automatically switches over to the “upperlimit pair” i.e. (burst2 and burst3) and the secondary upper limitposition (s1_pos). Likewise, when the primary pair becomes nonlinear inthe negative direction, LPC 1202D automatically switches over to the“lower limit pair” (burst4 and burst5) and the secondary lower limitposition (s2_pos).

BSEL 1202C uses register programming to select which burst pair is the“lower limit pair” (LL_pair, burst4 and burst5), the “upper limit pair”(UL_pair, burst2 and burst3), or the “track follow pair” (TF_pair,burst0 and burst1).

BSEL module 1202C consists of multiplexers that are used to select therequired bursts from among the recovered bursts. This approach supportsboth four and six burst formats. By programming LPC 1202D and BSEL 1202Cmodules, any order of burst pairs can be used for both four and sixburst formats.

Linear position (lin_pos) 1202G as determined by LPC 1202D is sent toEOC 1202H that determines the position error signal (PES) 1203 based onlin_pos 1202G and target position 1202I from DSP 206. EOC 1202H alsoreceives ROC 1202K value and run out correction register value 1202L.Configuration information 1202J from DSP 206 is used to configure EOC1202H.

FIG. 13 shows a process flow diagram for determining the error output(PES). Turning in detail to FIG. 13, in step S1300, EOC 1202H subtractsthe lin_Pos from a target position recovered from DSP 206 to obtain aPreliminary PES (“PPES”). EOC 1202H subtracts the linear position(lin_pos) from a programmed target position 1202I. The target positionmay be stored in a register located in DSP 206 and in one aspect, it isa 34-bit value that includes a 20 bit track ID value and a 14 bit microposition value. The most significant bits of the target position can beset using the register in DSP 206.

In step S1301, PPES is compared to a Upper Lock Limit (“ULL”) registervalue. If the PPES value is less than the ULL, then in step S1303, PPESis compared to a Lower Lock Limit (“LLL”) register value. If PPES isgreater than ULL or less than LLL, then in step S1302, PPES ismultiplied by contents of a gain register to determine the actual PES.The ULL and LLL values can be symmetrical or asymmetrical.

In step S1304, if PPES is within the ULL and LLL register values, it ismultiplied by the contents of a Locked Gain register.

In step S1305, the process determines if a run out correction (“ROC”)factor is needed. This is done by checking if a control register bit isset. If the bit is set, then ROC from the media is subtracted in stepS1306 and the process moves to step S1307.

If correction is to be performed by using a pre-programmed value (fromfirmware), then a pre-programmed value (from RO register) is subtractedin step S1308.

In step S1309, the PES value is compared to off-track write upper limit(OTWUL) value and the lower limit value (“OTWLL”). If the PES is greaterthan OTWUL value or if the OTWLL is greater than PES, then writing isdisabled in step S1310.

In step S1311, the PES value is compared to an off track seek upperlimit (“OTSUL”) value and lower limit (“OTSLL”). If PES is greater thanOTSUL or less than OTSCLL, then reading is disabled in step S1312.

In step S1313, PES is compared to PES output upper limit (“PUL”). If PESis greater than PUL, then in step S1314, the upper limit for PES isselected from registers in DSP 206.

In step S1315, if PES lower limit (“PLL”) is greater than the PES value,then in step S1316, the lower limit is selected from registers in DSP206.

In step S1317, the PES value is output to POC 1204.

Position Error Output Compensator (“POC”):

POC 1204 includes two infinite impulse response (“IIR”) filter registersets, a first stage IIR filter (F1 filter) 1205 and a second stage IIRfilter (F2 filter) 1206, as shown in FIG. 14. POC also includes aMultiply Accumulator Block (MAC) 1204A and a state machine (MACSM)1204B. Filter 1205 is a “five tap” filter that receives PES 1203 andoutputs 1205A. FIG. 15 shows a block diagram of filter 1205 and FIG. 16shows a signal flow diagram for filter 1205.

As shown in FIG. 16, each Z-1 block is used to represent a unit delayelement. The delay factor for each unit delay element is the samplerate, and the sample rate depends on the servo sample rate and the modeof operation (1×, 2×, 4× or 8×multi-rate operation as defined bymulti-rate timer 403) of DSP 206.

As shown in FIG. 15, filter 1205 uses MAC 1204A. Five multiplicationsoccur in the signal path and each multiplication uses its owncoefficient register 1205B.

Second stage filter, F2 1206 is similar to filter 1205, except in thisexample it is a 7-tap filter. Signal flow through filter 1206 is shownin FIG. 17. It is noteworthy that the same MAC 1204A and MACSM 1204B isused for both the filters.

It is noteworthy that for F1 1205 and F2 1206, after all of thecalculations are completed for one sample, the values are shifted to thenext holding cell in preparation for the subsequent sample. After theshifting of data samples is completed, calculations begin for the nextsample in anticipation of the arrival of the next data sample (PES 1203or FLOUT 1205A).

Many calculations are performed in advance of the arrival of the nextsample data, and when the next sample arrives, the only remainingcalculation needed is to multiply the input sample by it's correspondingfilter coefficient value (F1C0 or F2C0). This is referred to as“anticipation mode” and it reduces that amount of time required toproduce the output of the filter (1205 or 1206) once the sample hasarrived.

It is noteworthy that the first or second stage filters 1205 or 1206 canbe bypassed using control register bits. Thus F1 1205 and/or F2 1206 canbe used independently from the Position Error Calculator (PEC). Also F11205 and F2 1206 filters (through register programming) can be cascadedwith the Position Error Calculator 1202 to create a fully automaticPosition Error Calculation and Position Error Output Compensation signalpath.

Output Scaler 1207:

Output 1206A is sent to Output scaler 1207 that checks the output range.Output scaler 1207 uses two register values from registers in DSP 206,(for upper and lower limits, respectively) to limit the range of theoutput signal. By using two registers, the output range can be assigned.By using two separate registers, the output range limits are allowed tobe asymmetrical. If the output result is found to be outside of thespecified limits, then the limit value, the previous value, or the nullvalue is substituted for the output value as specified by controlregister bits.

Thereafter, the output is converted to a 10 bit unsigned value for thelinear (digital to analog converter) DAC using a programmable DAC offsetvalue (DOS[15:00]) that is used to form the output value. The unsigned10 bit DACval [9:0] 1207B is calculated from the output (COUT[15:00])1207A and DOS [15:00] using a 16 bit saturating adder as described bythe following equation:DACval [9:0]=(COUT[15:00]−DOS [15:00]+32768)/64

If the COUT [15:00] 1207A does not require offsetting for the DAC, thenthe DOSReg can be left as zero. The DACval output 1207B is an unsignednumber that ranges from 0 to 1023.

Also a 12 bit unsigned value PWMval [11:00] 1207B is calculated for thePWM0 LSB unit using the DAC offset value (DOS [15:00]) and the same 16bit saturating adder as follows:PWMval [11:00]=(COUT [15:00]−DOS [15:00]+32768)/16

PWMval output 1207B is an unsigned 12 bit number that ranges from 0 to4095.

Finally, the current and last output values can be read throughregisters COUTReg and LOUTReg. If further compensation is desired, thecurrent output value of the second stage filter 1206 can be modified andwritten back to the appropriate location depending on the control pathbeing used (PWM or DAC).

In one aspect of the present invention the process and systemautomatically calculate linear position based on burst values. Both fourand six burst formats are supported. Bursts pairs may be arranged in anyorder.

In yet another aspect of the present invention, position error signal isautomatically calculated based on linear position and target position.The position error signal is automatically compared to severalprogrammable limits, and several programmable values can be substitutedwhen the error signal is outside of these limits (as shown in the flowdiagram in FIG. 13).

In yet another aspect of the present invention, the position errorcalculation is automatically adjusted based on either recorded orelectronically stored Run Out Correction (ROC) information.

The calculated error correction result is compensated using a single IIRfilter or a cascaded pair of IIR filters. The pair of IIR filters can beused separately, or cascaded together, each having reduced input tooutput delay through the use of an anticipation mode.

In another aspect of the present invention, error calculations areautomatically converted from a signed number of 16-bit resolution to anunsigned number of 14 to 10 bit resolution.

Although the present invention has been described with reference tospecific embodiments, these embodiments are illustrative only and notlimiting. Many other applications and embodiments of the presentinvention will be apparent in light of this disclosure and the followingclaims.

1. A position error calculator for an embedded disk controller,comprising: a burst selector that can select a burst pair; a linearposition calculator that calculates head linear position based on burstpair format; and a position error calculator that determines a positionerror based on a linear position and target position, and the positionerror is compared to certain programmable limits.
 2. The position errorcalculator of claim 1, where the position error is automaticallyadjusted based on run out correction information.
 3. The position errorcalculator of claim 1, where the position error calculator isfunctionally coupled to a position error compensator having a singlefilter or more than one cascaded filters each having reduced input tooutput delay through use of an anticipation mode.
 4. The position errorcalculator of claim 1, where the burst selector supports four and sixburst formats.
 5. The position error calculator of claim 1, where theposition error is compared to an upper and lower limit values.
 6. Aposition error output compensator used in an embedded disk controller,comprising: a first filter that receives a position error signal from aposition error calculator; and a second filter that receives an inputsignal from the first filter, where after all calculations are completedfor one sample, values are shifted to a holding cell so thatcalculations can begin for a next sample in anticipation.
 7. Theposition error output compensator of claim 6, where the first filter isa five-tap filter and the second filter is a seven tap filter.
 8. Theposition error output compensator of claim 6, where both the filters usea single multiply accumulation block.
 9. The position error outputcompensator of claim 6, further comprises of an output scaler thatchecks an output range of a signal from the second filter or the firstfilter if the second filter is disabled.
 10. The position error outputcompensator of claim 9, where the output scaler uses more than oneregister so that the output range limits may be asymmetrical.
 11. Atrack follow controller (“TFC”) in an embedded disk controller,comprising: a position error calculator that determines a linearposition of a head based on burst format and determines a position errorbased on the linear position and a target position; and a position erroroutput compensator that receives a position error signal from theposition error calculator and filters the position error signal.
 12. TheTFC of claim 11, where the position error calculator includes a burstselector that can select a burst pair; a linear position calculator thatcalculates head linear position based on burst pair format; and an errorcalculator that determines the position error based on the linearposition and target position.
 13. The TFC of claim 12, where theposition error is automatically adjusted based on run out correctioninformation.
 14. The TFC of claim 11, where the position errorcalculator is functionally coupled to the position error outputcompensator having a single filter or more than one cascaded filterseach having reduced input to output delay through use of an anticipationmode.
 15. The TFC of claim 12, where the burst selector supports fourand six burst formats.
 16. The TFC of claim 11, where the position errorsignal is compared to an upper and lower limit values.
 17. The TFC ofclaim 11, where position error output compensator includes a firstfilter that receives a position error signal from the position errorcalculator; and a second filter that receives an input signal from thefirst filter, where after all calculations are completed for one sample,values are shifted to a holding cell so that calculations can begin fora next sample in anticipation.
 18. The TFC of claim 17, where the firstfilter is a five tap filter and the second filter is a seven tap filter.19. The TFC of claim 18, where both the filters use a single multiplyaccumulation block.
 20. The TFC of claim 17, further comprises of anoutput scaler that checks an output range of a signal from the secondfilter or the first filter if the second filter is disabled.
 21. The TFCof claim 20, where the output scaler uses more than one register so thatthe output range limits may be asymmetrical.
 22. A method fordetermining position error for a head used by an embedded diskcontroller to read and/or write data to a storage media, comprising:determining a difference between a head linear position and a targetposition for a four and/or six burst format; and generating apreliminary position error signal (“PPES”).
 23. The method of claim 22,further comprising: comparing PPES to an upper and lower limit value;and applying a run out correction, if applicable.